Sensor-centric path planning and control for robotic vehicles

ABSTRACT

Various embodiments involve controlling rotational maneuvers of a robotic vehicle (e.g., an unmanned aerial vehicle or UAV) so that commanded changes in vehicle attitude (e.g., pitch, roll, and/or yaw) may be performed as rotations about a center of sensing of a sensor instead of the vehicle&#39;s center of gravity. Maneuvers performed according to various embodiments may reduce or eliminate translational movements in the sensor output that occur when the robotic vehicle rotates about the center of gravity and the sensor is mounted some distance from the center of gravity.

BACKGROUND

Robotic vehicles (sometimes referred to as “drones”) are increasinglybeing used in various consumer and commercial applications. For example,an unmanned aerial vehicle (UAV) may be equipped with various sensors,such as cameras, whose output may be sensitive to rotational maneuversof the robotic vehicle during flight (e.g., pitch, roll, and yaw). Tocompensate for UAV rotations in sensor output, a mechanical or digitalgimbal may be used so that the sensor can point in a given directionindependent of the orientation or rotations of the UAV. A mechanicalgimbal may physically adjust the orientation of a camera by an amountthat compensates for UAV rotations. Alternatively, a digital gimbal thatuses a wide field-of-view lens to capture video may enable digitalselection of a portion of the captured video compensates for UAVrotations.

Robotic vehicle control systems, particularly UAV control systems, aretypically egocentric around the center of gravity. Therefore, UAVrotations are generally centered around the UAV's center of gravity.When the camera is positioned at the UAV's center of gravity, a gimbalcan adjust the camera orientation and/or video output to compensate forthe rotational movement, thereby effectively removing any jitter orother movement from the video output. However, cameras mounted ongimbals are generally positioned to one side of the UAV's center ofgravity (e.g., up, down, left or right). Consequently, the gimbal cannotcompensate for translational movements (i.e., vertical, horizontal, orboth) of the camera that occur during rotations due to the distancebetween the camera and the UAV's center of gravity. Thus, the output ofa camera (or other sensor) mounted on a gimble some distance from thecenter of gravity of a UAV will suffer movement or jitter during UAVmaneuvers despite compensating rotations of the gimbal.

SUMMARY

Various embodiments are disclosed for controlling rotational maneuversof a robotic vehicle, so that commanded changes in vehicle attitude(e.g., pitch, roll, and/or yaw) may be performed as rotations about acenter of sensing of a sensor (e.g., the sensor's location or sensingplane, such as the image plane or focal plane of a camera) instead ofthe vehicle's center of gravity. Maneuvers performed according tovarious embodiments may reduce or eliminate translational movements inthe sensor output that may occur when the robotic vehicle rotates aboutthe center of gravity and the sensor is mounted some distance from thecenter of gravity.

Various embodiments may include a processor of a robotic vehicledetermining a rotational maneuver to perform about an axis at the centerof gravity of the robotic vehicle (e.g., pitch, roll, yaw, or anycombination thereof), determining an anticipated translational movementof a center of sensing of a sensor positioned away from a center ofgravity of the robotic vehicle based on the rotational maneuver and adistance between the center of gravity of the robotic vehicle and thecenter of sensing, and controlling the robotic vehicle to perform arotational maneuver such that the robotic vehicle rotates about thecenter of sensing of the sensor.

In some embodiments, determining the anticipated translational movementof the center of sensing of the sensor may include determining ananticipated vertical movement and/or an anticipated horizontal movementof the center of sensing based on the rotational maneuver and thedistance between the center of gravity of the robotic vehicle and thecenter of sensing.

In some embodiments, controlling the robotic vehicle to perform therotational maneuver such that the robotic vehicle rotates about thecenter of sensing of the sensor may include controlling the roboticvehicle to perform the rotational maneuver such that the center ofgravity of the robotic vehicle traverses a path that offsets theanticipated vertical movement and/or the anticipated horizontal movementof the center of sensing. In some embodiments, controlling the roboticvehicle to perform a rotational maneuver such that the robotic vehiclerotates about the center of sensing of the sensor may includecontrolling the robotic vehicle's rotors to cause the robotic vehicle toperform the rotational maneuver about the axis at the center of sensing.

In some embodiments, determining the rotational maneuver to performabout the axis at the center of gravity of the robotic vehicle mayinclude obtaining data defining a navigation path for the roboticvehicle and determining the rotational maneuver to perform about theaxis at the center of gravity of the robotic vehicle based on datadefining the navigation path.

Further embodiments include a robotic vehicle and/or a computing devicewithin a robotic vehicle including a processor configured withprocessor-executable instructions to perform operations of theembodiment methods summarized above. In some embodiments, the roboticvehicle may be an aerial vehicle, a terrestrial vehicle, a space-basedvehicle, or an aquatic vehicle. Further embodiments include a processingdevice (e.g., a system-on-chip (SoC)) including a processor configuredwith processor-executable instructions to perform operations of theembodiment methods summarized above. Further embodiments include arobotic vehicle and/or a computing device within a robotic vehicleincluding means for performing functions of the embodiment methodssummarized above.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, which are incorporated herein and constitutepart of this specification, illustrate exemplary embodiments, andtogether with the general description given above and the detaileddescription given below, serve to explain the features of the variousembodiments.

FIGS. 1A and 1B illustrate front elevation and plan views, respectively,of a UAV equipped with a sensor according to some embodiments.

FIG. 2 illustrates components of a control unit of a UAV suitable foruse in accordance with some embodiments.

FIG. 3 illustrates a UAV performing various rotational maneuvers aboutthe UAV's center of gravity.

FIG. 4 illustrates a translational movement of a sensor in response to arotational maneuver performed about the center of gravity of a UAV.

FIG. 5 illustrates a UAV performing a rotational movement such that theUAV rotates about an axis at the center of sensing of a sensor accordingto some embodiments.

FIG. 6 illustrates a method of controlling rotational maneuvers of a UAVto enable maneuvers about an axis at the center of sensing of a sensoraccording to some embodiments.

FIGS. 7A, 7B and 7C illustrate geometries for determining anticipatedvertical and horizontal movements of the center of sensing based onrotational maneuvers according to some embodiments.

FIG. 8 illustrates geometries of UAV maneuvers about multiple axes forperforming rotational movements about the center of sensing of a sensoraccording to some embodiments.

FIG. 9 illustrates a method of adjusting a planned path or trajectory ofa UAV to perform rotational maneuvers about a center of sensingaccording to some embodiments.

FIG. 10 is a component block diagram illustrating a processing devicesuitable for implementing various embodiments.

DETAILED DESCRIPTION

Various embodiments will be described in detail with reference to theaccompanying drawings. Wherever possible, the same reference numberswill be used throughout the drawings to refer to the same or like parts.References made to particular examples and implementations are forillustrative purposes, and are not intended to limit the scope of theclaims.

Various embodiments include methods and systems that control how roboticvehicle maneuvers are performed so that changes in vehicle attitude(e.g., pitch, roll, and/or yaw) happen as rotations about a center ofsensing of a sensor (e.g., the focal plane of a camera) instead of thevehicle's center of gravity. Maneuvers performed according to variousembodiments reduce or eliminate translational movements in the sensoroutput that occur when the robotic vehicle rotates about the center ofgravity and the sensor is mounted on a gimbal some distance from thecenter of gravity. In various embodiments, rotational maneuvers mayinclude a vertical and/or horizontal adjustment to the robotic vehicle'scenter of gravity in conjunction with the rotation, so that the sensor'scenter of sensing remains in essentially the same location during themaneuver. For example, in some embodiments, an aerial robotic vehiclecontroller may induce a pitch by increasing (or decreasing) the speed ofrotors removed from the camera/sensor while maintaining the speed ofrotors near to the sensor to change the tilt of the UAV while adjustingthe altitude of the center of gravity so that the altitude of the centerof sensing does not change. Various embodiments enable a gimbal toadjust the pointing angle of the camera/sensor so that the pointingdirection does not change during the maneuver. In some embodiments, aflight path or trajectory of a UAV may be determined or planned aboutthe center of sensing of a camera (vs. the UAV's center of gravity) sothat a smooth video may be obtained during the planned flight ortrajectory.

As used herein, the term “robotic vehicle” refers to one of varioustypes of vehicles including an onboard computing device configured toprovide some autonomous or semi-autonomous capabilities. Examples ofrobotic vehicles include but are not limited to: aerial vehicles, suchas an unmanned aerial vehicle (UAV); ground vehicles (e.g., anautonomous or semi-autonomous car, a vacuum robot, etc.); water-basedvehicles (i.e., vehicles configured for operation on the surface of thewater or under water); space-based vehicles (e.g., a spacecraft or spaceprobe); and/or some combination thereof. In some embodiments, therobotic vehicle may be manned. In other embodiments, the robotic vehiclemay be unmanned. In embodiments in which the robotic vehicle isautonomous, the robotic vehicle may include an onboard computing deviceconfigured to maneuver and/or navigate the robotic vehicle withoutremote operating instructions (i.e., autonomously), such as from a humanoperator (e.g., via a remote computing device). In embodiments in whichthe robotic vehicle is semi-autonomous, the robotic vehicle may includean onboard computing device configured to receive some information orinstructions, such as from a human operator (e.g., via a remotecomputing device), and autonomously maneuver and/or navigate the roboticvehicle consistent with the received information or instructions. Insome implementations, the robotic vehicle may be an aerial vehicle(unmanned or manned), which may be a rotorcraft or winged aircraft. Forexample, a rotorcraft (also referred to as a multirotor or multicopter)may include a plurality of propulsion units (e.g., rotors/propellers)that provide propulsion and/or lifting forces for the robotic vehicle.Specific non-limiting examples of rotorcraft include tricopters (threerotors), quadcopters (four rotors), hexacopters (six rotors), andoctocopters (eight rotors). However, a rotorcraft may include any numberof rotors.

As used herein, the terms “unmanned aerial vehicle” or “UAV” refer toone of various types of aerial robotic vehicles that are capable ofperforming a rotational maneuver (e.g., pitch, roll, or yaw). An aerialrobotic vehicle or UAV may be propelled for movement in any of a numberof known ways. Although various embodiments of robotic vehicles areillustrated and described with reference to aerial robotic vehicle orUAVs, various embodiments are not limited to aerial robotic vehicles andmay be implemented in any type of mobile robotic or autonomous vehicle(e.g., ground or aquatic vehicles). Thus, references to aerial roboticvehicles and UAVs in descriptions of various embodiments are notintended to limit the scope of the claims to aerial robotic vehicles.

The term “computing device” is used herein to refer to an electronicdevice equipped with at least a processor. Examples of computing devicesmay include navigation control and/or mission management computers,mobile devices (e.g., cellular telephones, wearable devices,smart-phones, web-pads, tablet computers, Internet enabled cellulartelephones, Wi-Fi® enabled electronic devices, personal data assistants(PDA's), laptop computers, etc.), personal computers, and servercomputing devices. In various embodiments, computing devices may beconfigured with memory and/or storage as well as networkingcapabilities, such as network transceiver(s) and antenna(s) configuredto establish a wide area network (WAN) connection (e.g., a cellularnetwork connection, etc.) and/or a local area network (LAN) connection(e.g., a wired/wireless connection to the Internet via a Wi-Fi® router,etc.).

FIGS. 1A and 1B illustrate front elevation and plan views, respectively,of robotic vehicle 100 in the form of an aerial robotic vehicle or UAVequipped with a sensor 120 according to some embodiments. With referenceto FIGS. 1A and 1B, in some embodiments, the sensor 120 may be any typeof sensor that is capable of perceiving an environment within a limitedfield of view. For example, the sensor 120 may include a camera, imagesensor, radar sensor, sonar sensor, ultrasound sensor, depth sensor,active sensors, passive sensors, or any combination thereof. Differenttypes of sensors (i.e., sensors using different technologies) typicallyhave different fields of view in terms of viewing angle and/or rangesensitivities.

The sensor 120 may be attached to gimbal 122 (not visible in FIG. 1B)that is attached to a main housing or frame 110 of the robotic vehicle100. In some embodiments, the sensor 120 and gimbal 122 may beintegrated into the main housing 110 of the robotic vehicle 100, suchthat the sensor 120 is exposed through an opening in the main housing110. In many cases, the sensor 120, and thus the center of sensing, maybe located at a position offset from the robotic vehicle's center ofgravity 105 (e.g., up, down, left, and/or right). For example, in theillustrated examples, the center of sensing 124 is offset from therobotic vehicle center of gravity 105 by a vertical distance 126 and ahorizontal distance 128.

The robotic vehicle 100 may be propelled for flight in any of a numberof known ways. For example, two or more propulsion units, each includingone or more rotors 115, may provide propulsion or lifting forces for therobotic vehicle 100 and any payload carried by the robotic vehicle 100.Although the robotic vehicle 100 is illustrated as a quad copter withfour rotors, an aerial robotic vehicle 100 may include more or fewerthan four rotors 115. In some embodiments, the UAV 100 may includewheels, tank-treads, or other non-aerial movement mechanisms to enablemovement on the ground, on or in water, and combinations thereof. Therobotic vehicle 100 may be powered by one or more types of power source,such as electrical, chemical, electro-chemical, or other power reserve,which may power the propulsion units, the onboard computing device,and/or other onboard components. For ease of description andillustration, some detailed aspects of the robotic vehicle 100 areomitted, such as wiring, frame structure, power source, landingcolumns/gear, or other features that would be known to one of skill inthe art.

FIG. 2 illustrates components of a control unit 200 of a robotic vehicle100 suitable for use in various embodiments. With reference to FIGS.1A-2, the control unit 200 may be configured to implement methods ofcontrolling rotational maneuvers of the robotic vehicle to performrotational movements of the robotic vehicle 100 about the center ofsensing of a sensor 120. The control unit 200 may include variouscircuits and devices used to power and control the operation of therobotic vehicle 100. The control unit 200 may include a processor 260, apower supply 270, payload-securing units 275, an input processor 280, asensor input/output (I/O) processor 282, an output processor 285, and aradio processor 290. The sensor I/O processor 282 may be coupled to acamera or other sensor 120. In some embodiments, the avionics processor267 coupled to the processor 260 and/or the navigation unit 263 may beconfigured to provide travel control-related information such asaltitude, attitude, airspeed, heading and similar information that thenavigation processor 263 may use for navigation purposes, such as deadreckoning between GNSS position updates. The avionics processor 267 mayinclude or receive data from the gyroscope/accelerometer 265 thatprovides data regarding the orientation and accelerations of the roboticvehicle 100 that may be used in navigation and positioning calculations.

In some embodiments, the processor 260 may be dedicated hardwarespecifically adapted to implement a method of controlling rotationalmaneuvers of the robotic vehicle to compensate for translationalmovements in the video or other sensor output of the sensor 120 on therobotic vehicle according to some embodiments. In some embodiments, theprocessor 260 may be a programmable processing unit programmed withprocessor-executable instructions to perform operations of the variousembodiments. The processor 260 may also control other operations of therobotic vehicle, such as navigation, collision avoidance, dataprocessing of sensor output, etc. In some embodiments, the processor 260may be a programmable microprocessor, microcomputer or multipleprocessor chip or chips that can be configured by software instructionsto perform a variety of functions of the robotic vehicle. In someembodiments, the processor 260 may be a combination of dedicatedhardware and a programmable processing unit.

In some embodiments, the processor 260 may be coupled to the sensor I/Oprocessor 282 to receive images or data output from an onboard camera orother sensor 120. In some embodiments, the processor 260 may beconfigured to process, manipulate, store, and/or retransmit the sensoroutput received via the sensor I/O processor 282 for a variety ofapplications, including but not limited to image/video recording,package delivery, collision avoidance, and path planning,

In some embodiments, the processor 260 may include or be coupled tomemory 261, a trajectory processor 262, a navigation processor 263, agyroscope/accelerometer 265, and/or an avionics processor 267. In someembodiments, the navigation processor 263 may include a globalnavigation satellite system (GNSS) receiver (e.g., one or more globalpositioning system (GPS) receivers) enabling the robotic vehicle 100 tonavigate using GNSS signals. Alternatively or additionally, thenavigation processor 263 may be equipped with radio navigation receiversfor receiving navigation beacons or other signals from radio nodes, suchas navigation beacons (e.g., very high frequency (VHF) omni directionalrange (VOR) beacons), Wi-Fi® access points, cellular network sites,radio station, remote computing devices, other robotic vehicle s, etc.In some embodiments, the processor 260 and/or the navigation processor263 may be configured to communicate with a server or other wirelesscommunication device 210 through a wireless connection (e.g., a cellulardata network) to receive data useful in navigation, provide real-timeposition reports, and assess data.

In some embodiments, the processor 260 and/or the trajectory processor262 may receive data from the navigation processor 263 and use such datain order to determine the present position and orientation of therobotic vehicle 100, as well as an appropriate course towards adestination or intermediate sites. In some embodiment, the avionicsprocessor 267 coupled to the processor 260 and/or the navigationprocessor 263 may be configured to provide travel control-relatedinformation such as altitude, attitude, airspeed, heading and similarinformation that the trajectory processor 262 and/or the navigationprocessor 263 may use for navigation purposes, such as dead reckoningbetween GNSS position updates. In some embodiments, the avionicsprocessor 267 may include or receive data from thegyroscope/accelerometer 265 that provides data regarding the orientationand accelerations of the robotic vehicle 100 that may be used in flightcontrol calculations.

In some embodiments, the control unit 200 may be equipped with the inputprocessor 280 and an output processor 285. For example, in someembodiments, the input processor 280 may receive commands or data fromvarious external sources and route such commands or data to theprocessor 260 to configure and/or control one or more operations of therobotic vehicle 100. In some embodiments, the processor 260 may becoupled to the output processor 285 to output control signals formanaging the motors that drive the rotors 115 and other components ofthe robotic vehicle 100. For example, the processor 260 may control thespeed and/or direction of the individual motors of the rotors 115 toenable the robotic vehicle 100 to perform various rotational maneuvers,such as pitch, roll, and yaw.

In some embodiment, the radio processor 290 may be configured to receivenavigation signals, such as signals from aviation navigation facilities,etc., and provide such signals to the processor 260 and/or thenavigation processor 263 to assist in robotic vehicle navigation. Invarious embodiments, the navigation processor 263 may use signalsreceived from recognizable radio frequency (RF) emitters (e.g., AM/FMradio stations, Wi-Fi® access points, and cellular network basestations) on the ground. The locations, unique identifiers, signalstrengths, frequencies, and other characteristic information of such RFemitters may be stored in a database and used to determine position(e.g., via triangulation and/or trilateration) when RF signals arereceived by the radio processor 290. Such a database of RF emitters maybe stored in the memory 261 of the robotic vehicle 100, in aground-based server in communication with the processor 260 via awireless communication link, or in a combination of the memory 261 and aground-based server.

In some embodiment, the processor 260 may use the radio processor 290 toconduct wireless communications with a variety of wireless communicationdevices 210, such as a beacon, server, smartphone, tablet, or othercomputing device with which the robotic vehicle 100 may be incommunication. A bi-directional wireless communication link (e.g.,wireless signals 214) may be established between a transmit/receiveantenna 291 of the radio processor 290 and a transmit/receive antenna212 of the wireless communication device 210. In an example, thewireless communication device 210 may be a cellular network base stationor cell tower. The radio processor 290 may be configured to supportmultiple connections with different wireless communication devices(e.g., wireless communication device 210) having different radio accesstechnologies.

In some embodiments, the processor 260 may be coupled to one or morepayload-securing units 275. The payload-securing units 275 may includean actuator motor that drives a gripping and release mechanism andrelated controls that are responsive to the control unit 200 to grip andrelease a payload package in response to commands from the control unit200.

In some embodiments, the power supply 270 may include one or morebatteries that may provide power to various components, including theprocessor 260, the payload-securing units 275, the input processor 280,the sensor I/O processor 282, the output processor 285, and the radioprocessor 290. In addition, the power supply 270 may include energystorage components, such as rechargeable batteries. In this way, theprocessor 260 may be configured with processor-executable instructionsto control the charging of the power supply 270, such as by executing acharging control algorithm using a charge control circuit. Alternativelyor additionally, the power supply 270 may be configured to manage itsown charging.

While the various components of the control unit 200 are illustrated inFIG. 2 as separate components, some or all of the components (e.g., theprocessor 260, the output processor 285, the radio processor 290, andother units) may be integrated together in a single device or processorsystem, such as a system-on-chip.

FIG. 3 illustrates a robotic vehicle 100 in the form of an aerialrobotic vehicle showing axes of rotation about the vehicle's center ofgravity. With reference to FIGS. 1A-3, when a robotic vehicle 100performs a rotational maneuver (e.g., pitch, roll, and/or yaw), therobotic vehicle 100 traditionally rotates about an axis that intersectswith the robotic vehicle's center of gravity. For example, the roboticvehicle 100 may be represented in a coordinate space having threeorthogonal axes x, y, and z that intersect at the robotic vehicle'scenter of gravity. The center of gravity may represent an averagelocation of the weight of the robotic vehicle 100. In some embodiments,the center of gravity may be a predetermined location on the roboticvehicle that is based on the structural design and/or anticipatedpayload of the robotic vehicle 100. In some embodiments, the center ofgravity of the robotic vehicle may be dynamically determined accordingto existing techniques.

The speed and/or direction of the individual rotors 115 of the roboticvehicle 100 may be controlled by the vehicle processor 260 to performspecific rotational maneuvers about the robotic vehicle's center ofgravity. Traditionally, to make a quadcopter roll right (e.g., rotateabout the roll axis x clockwise), for example, the two rotors on theleft side of the quadcopter may be controlled to spin faster than thetwo rotors on the right side. This gives the left side of the quadcoptermore lift than the right side, causing the quadcopter to tilt to theright about the roll axis x. To make a quadcopter pitch down (e.g.,rotate about the pitch axis y clockwise), the two rotors on the backside of the quadcopter may be controlled to spin faster than the tworotors on the front side. This gives the back side of the quadcoptermore lift than the front side, causing the quadcopter to tilt downwardabout the pitch axis y. To make a quadcopter yaw (e.g., rotate about theyaw axis z), a first pair of diametrically opposite rotors that spin inone direction may be controlled to spin slower than a second pair ofdiametrically opposite rotors that spin in the other direction, causingthe quadcopter to rotate about the yaw axis clockwise (orcounter-clockwise).

As described, cameras and other sensors 120 may be mounted on a roboticvehicle 100 to one side of the robotic vehicle's center of gravity(e.g., up, down, left or right). Thus, while a gimbal 122 may compensatefor robotic vehicle rotations about the robotic vehicle's center ofgravity 105, the gimbal 122 cannot compensate for translationalmovements of a sensor 120 resulting from such rotations when the camera120 or other sensor, and thus the center of sensing 124, is positionedaway from the robotic vehicle's center of gravity 105.

FIG. 4 illustrates a translational movement of a sensor 420 in responseto a rotational maneuver performed about the center of gravity 405 of arobotic vehicle 100. With reference to FIGS. 1A-4, the robotic vehicle100 may be equipped with a camera or other sensor 420 positioned awayfrom the robotic vehicle's center of gravity 405. The center of sensingmay be an image plane, a focal plane, or other sensing plane of thesensor 420. The location of the sensor 420 on the robotic vehicle 100may be represented as a lever arm 400 that rotates about the center ofgravity 405.

When the robotic vehicle 100 pitches downward about a pitch axis x at arotation angle θ, the center of sensing of the sensor 420 is offset by ahorizontal movement h and a vertical movement v from a first position425 a to a second position 425 b. In some embodiments, the center ofsensing may be a predetermined fixed location on the sensor 420. As aresult of translational movements of the center of sensing from position425 a to 425 b, translational movements are also induced in the outputof the sensor 420. For example, where the sensor 420 is a camera, thevideo output may appear to be jittery due to the vertical v andhorizontal h movements of the center of sensing even though a gimbal 122compensates for rotational movements of the robotic vehicle 100.Translational movements (e.g., vertical, horizontal, or both) may alsobe induced in the sensor output in response to the robotic vehicle 100performing a roll or yaw maneuver about the center of gravity.

In order to avoid translational movements in the sensor output, variousembodiments may control the rotational maneuver of the robotic vehicle100 to include a vertical and/or horizontal adjustment to the roboticvehicle's center of gravity 405, so that the center of sensing remainsessentially in the same location or position (e.g., 425 a). For example,in some embodiments, the center of sensing may remain in the samevertical plane, same horizontal plane, or both.

FIG. 5 illustrates a robotic vehicle 100 performing a rotationalmovement such that the robotic vehicle 100 rotates about an axis 430 atthe center of sensing 425 of a sensor 420 according to some embodiments.With reference to FIGS. 1A-5, the robotic vehicle 100 includes a camera420 or other sensor positioned away from the robotic vehicle's center ofgravity 405 represented as a lever arm 400. As the robotic vehicle 100pitches downward towards the rotational angle θ, a control processor 200also executes flight controls that cause the robotic vehicle's center ofgravity 405 to traverse a path 410 that includes a vertical movement vand a horizontal movement h. As a result, the center of sensing 425remains still.

Roll and yaw maneuvers may be performed in a similar manner such thatthe robotic vehicle's center of gravity 405 traverses a path thatoffsets for the movement of the sensor's center of sensing 425 thatwould otherwise occur if rotations occurred about the center of gravity405. Such maneuvers may be accomplished by controlling the speed and/ordirection of rotors 115 of the robotic vehicle. Thus, variousembodiments involve controlling pitch, roll and/or yaw rotations of arobotic vehicle 100 about the center of sensing 425 of a sensor.

FIG. 6 illustrates a method 600 of controlling rotational maneuvers of arobotic vehicle (e.g., 100, 400) to compensate for translationalmovements in sensor output according to some embodiments. With referenceto FIGS. 1A-6, operations of the method 600 may be performed by arobotic vehicle's control unit (e.g., 200) or a processor (e.g., 260)within the control unit.

In block 610, the processor may determine a rotational maneuver toperform about an axis at the center of gravity of the robotic vehicle.The rotational maneuver may include pitching, rolling, yawing or acombination of thereof. In some embodiments, the rotational angle may bemeasured in radians, degrees, or other angular units. In someembodiments, the rotational maneuver may be determined dynamically,e.g., a maneuver determined to avoid a collision or in response toremote control signals. In some embodiments, the rotational maneuver maybe determined from preconfigured or stored navigation/travel plans,e.g., a flight path or trajectory to a destination.

In block 620, the processor (e.g., 260) may determine an anticipatedtranslational movement of a center of sensing associated with a sensorthat would occur if the rotation is performed about the roboticvehicle's center of gravity. This determination may be based on therotational maneuver determined in block 610 and the distance between therobotic vehicle's center of gravity and the center of sensing of thesensor. The determined anticipated translational movement of the centerof sensing may include an anticipated vertical movement, an anticipatedhorizontal movement, or both.

FIGS. 7A, 7B and 7C illustrate a manner of determining anticipatedvertical and horizontal movements of the center of sensing based on arotational maneuver that may be performed by the processor in block 620.With reference to FIGS. 1A-7B, in some embodiments, the processor maymodel the anticipated vertical and horizontal movements of the sensor'scenter of sensing from a starting position 425 a to an ending position425 b as an isosceles triangle 700. For example, the isosceles triangle700 may have an apex at the center of gravity 405 of angle θ and twoequal legs of constant length R. The constant length R may be calculatedonce from the design of the robotic vehicle or may be calibrated withinthe processor using other data. The base of the isosceles triangle 700,which extends between the starting position 425 a and ending position425 b of the center of sensing, form the hypotenuse of a right triangle720 having legs that correspond to the anticipated vertical andhorizontal movements v, h. Thus, in some embodiments, the processor maycalculate anticipated values of the vertical and horizontal movements v,h of the center of sensing based on the base length of triangle 700,e.g., 2y, and the angle of rotation θ. For example, by splitting theisosceles triangle 700 into two right triangles 705, 710, the processormay calculate the base length of triangle 700 as equal to 2R*sin(θ/2)(i.e., 2y where y=R*sin(θ/2)) or an approximation thereof. Using thecalculated base length 2y as the length of the hypotenuse of triangle720 and an angle of θ/2, the processor may further calculate theanticipated vertical movement v as equal to R*sin(θ) and the anticipatedhorizontal movement h as equal to R*sin(θ)*tan(θ/2) or approximationsthereof.

In some embodiments, the processor may determine only the anticipatedvertical movement v associated with the rotational maneuver (e.g.,pitch) or the anticipated horizontal movement h (e.g., yaw) in block620. In some embodiments, the processor may determine both theanticipated vertical movement v and horizontal movement h associatedwith the rotational maneuver (e.g., roll) in block 630.

Returning to the method 600, in block 630, the processor may control therobotic vehicle to perform the rotational maneuver based on theanticipated translational movement of the center of sensing such thatthe robotic vehicle rotates about an axis at the center of sensing. Forexample, the processor may use the amount of rotation (e.g., rotationangle θ) determined in block 610 in conjunction with the anticipatedtranslational movement of the center of sensing determined in block 620(e.g., v, h, or both) to determine a flight path of the roboticvehicle's center of gravity, and control the robotic vehicle to executethat flight path. Thus, the processor may control the rotors 115 orother propulsion units of the robotic vehicle 100 to perform therotational maneuver such that the center of gravity of the roboticvehicle traverses a path that offsets one or more of the anticipatedvertical movement and the anticipated horizontal movement of the centerof sensing determined in block 620.

In some embodiments, when the navigation processor (e.g., 263) maycommand a single axis rotation (e.g., pitch) as part of a larger path(e.g., forward movement along the x-axis), the processor may send thecommand signal to a trajectory processor (e.g., 262) that translates thecommanded motion from the center-of-mass into the center-of-sensing. Forexample, in some embodiments, the trajectory processor may send severalsignals to the avionics processor (e.g., 267) for small motion changes.The net effect of the small steps may be to adjust the normal sequenceof pitching forward and increasing the z-axis thrust, which moves thecenter of sensing from position 425 a to position 425 b as illustratedin FIG. 7B. The net adjustment uses the h and v values calculatedpreviously to move the center of mass from position 405 a to position405 b as illustrated in FIG. 7C so that the center of sensing at 425 adoes not translate but may rotate. Each small step (e.g., each dash of410) may be determined using the same calculation but for the smallerangles of that arc segment. In some embodiments, the total angle neededmay be divided uniformly while other embodiments may use nonlinearspacing. In some embodiments, the same or similar procedures may be usedfor independent roll and yaw motions.

The processor may again determine the next rotational maneuver in block610 as the method 600 may be performed continuously or periodically sothat most or all maneuvers by the robotic vehicle while executing amission or transiting to a destination are performed so that rotationsof the robotic vehicle occur about the axis at the center of sensing.

FIG. 8 illustrates geometries 800 involved in a robotic vehicleperforming multiple rotational movements simultaneously about the centerof sensing of a sensor according to some embodiments. With reference toFIGS. 1-8, when the navigation processor commands two rotations to beperformed by the robotic vehicle together simultaneously, the same orsimilar calculations for the h and v values may be used to send signalsto the avionics processor for the displacements along that rotationpath. In some embodiments, the angles commanded from the navigationprocessor (θ₁ and θ₂) for a first rotation 801 and a second rotation 802may be orthogonal angles (e.g., roll, pitch, and yaw). In someembodiments, the angle needed for the calculations of h and v values isthen θ=cos⁻¹(cos(θ₁)·cos(θ₂)).

In some embodiments, a processor may determine a path or trajectory of arobotic vehicle that coincides with the center of sensing of a camera asopposed to the robotic vehicle's center of gravity to enable a smoothvideo to be obtained from a camera 120 on a gimbal 122. As previouslydiscussed, changes in attitude (e.g., roll, yaw, and pitch) aretypically centered around the robotic vehicle's center of gravity, whichcan cause translational movements of a sensor located a distance fromthe robotic vehicle's center of gravity. Thus, in order to avoidtranslational movement in sensor output, the processor may determine ananticipated translational movement of a center of sensing associatedwith the sensor (e.g., 120, 420) based on the rotational maneuver and adistance between the robotic vehicle's center of gravity and the centerof sensing (e.g., block 620) and control the robotic vehicle inperforming the rotational maneuver based on the anticipatedtranslational movement so that the robotic vehicle rotates about an axisat the center of sensing (e.g., 430).

FIG. 9 illustrates a method 900 of adjusting a planned path ortrajectory of a robotic vehicle (e.g., an aerial robotic vehicle or UAV)that performs rotational maneuvers about a center of sensing accordingto some embodiments. With reference to FIGS. 1A-9, operations of themethod 900 may be performed by the robotic vehicle's control unit (e.g.,200), particularly a processor (e.g., 260) within the control unit. Themethod 900 may include operations in block 620 and 630 of the method 600as described.

In block 910, the processor may obtain data defining a navigation pathfor a robotic vehicle (e.g., 100, 400) equipped with a sensor (e.g.,120, 420) positioned away from the robotic vehicle's center of gravity(e.g., 405). In some embodiments, the navigation data may define aseries of location-based coordinates or waypoints (e.g., GPScoordinates, latitude/longitude/altitude coordinates, etc.) along a pathto an intended destination.

In block 920, the processor (e.g., 260) may determine a rotationalmaneuver to perform about an axis at the center of gravity of therobotic vehicle based on data defining the navigation path. For example,in some embodiments, the processor may determine whether to perform arotational maneuver in order to effect a change in direction or attitudeof the robotic vehicle necessary to follow the navigation path.

In block 620, the processor (e.g., 260) may determine an anticipatedtranslational movement of a center of sensing associated with a sensorthat would occur if the rotation determined in block 920 is performedabout the robotic vehicle's center of gravity. This determination may bebased on the rotational maneuver determined in block 920 and thedistance between the robotic vehicle's center of gravity and the centerof sensing of the sensor. The determined anticipated translationalmovement of the center of sensing may include an anticipated verticalmovement, an anticipated horizontal movement, or both.

In block 630, the processor may control the robotic vehicle to performthe rotational maneuver based on the anticipated translational movementof the center of sensing such that the robotic vehicle rotates about anaxis at the center of sensing. For example, the processor may use theamount of rotation (e.g., rotation angle θ) determined in block 920 inconjunction with the anticipated translational movement of the center ofsensing determined in block 620 (e.g., v, h, or both) to determine aflight path of the robotic vehicle's center of gravity, and control therobotic vehicle to execute that flight path.

In optional block 930, the processor may determine a next rotationalmaneuver to perform about the center of gravity from the data definingthe navigation path obtained in block 920. For example, in someembodiments, the processor may determine whether to perform a nextrotational maneuver in order to effect a next change in direction oraltitude of the robotic vehicle as indicated in the navigation pathdata.

Various embodiments may be implemented within a processing device 1010configured to be used in a robotic vehicle. A processing device may beconfigured as or including a system-on-chip (SoC) 1012, an example ofwhich is illustrated FIG. 10. With reference to FIGS. 1-10, the SoC 1012may include (but is not limited to) a processor 1014, a memory 1016, acommunication interface 1018, and a storage memory interface 1020. Theprocessing device 1010 or the SoC 1012 may further include acommunication component 1022, such as a wired or wireless modem, astorage memory 1024, an antenna 1026 for establishing a wirelesscommunication link, and/or the like. The processing device 1010 or theSoC 1012 may further include a hardware interface 1028 configured toenable the processor 1014 to communicate with and control variouscomponents of a robotic vehicle. The processor 1014 may include any of avariety of processing devices, for example any number of processorcores.

The term “system-on-chip” (SoC) is used herein to refer to a set ofinterconnected electronic circuits typically, but not exclusively,including one or more processors (e.g., 1014), a memory (e.g., 1016),and a communication interface (e.g., 1018). The SoC 1012 may include avariety of different types of processors 1014 and processor cores, suchas a general purpose processor, a central processing unit (CPU), adigital signal processor (DSP), a graphics processing unit (GPU), anaccelerated processing unit (APU), a subsystem processor of specificcomponents of the processing device, such as an image processor for acamera subsystem or a display processor for a display, an auxiliaryprocessor, a single-core processor, and a multicore processor. The SoC1012 may further embody other hardware and hardware combinations, suchas a field programmable gate array (FPGA), an application-specificintegrated circuit (ASIC), other programmable logic device, discretegate logic, transistor logic, performance monitoring hardware, watchdoghardware, and time references. Integrated circuits may be configuredsuch that the components of the integrated circuit reside on a singlepiece of semiconductor material, such as silicon.

The SoC 1012 may include one or more processors 1014. The processingdevice 1010 may include more than one SoC 1012, thereby increasing thenumber of processors 1014 and processor cores. The processing device1010 may also include processors 1014 that are not associated with anSoC 1012 (i.e., external to the SoC 1012). Individual processors 1014may be multicore processors. The processors 1014 may each be configuredfor specific purposes that may be the same as or different from otherprocessors 1014 of the processing device 1010 or SoC 1012. One or moreof the processors 1014 and processor cores of the same or differentconfigurations may be grouped together. A group of processors 1014 orprocessor cores may be referred to as a multi-processor cluster.

The memory 1016 of the SoC 1012 may be a volatile or non-volatile memoryconfigured for storing data and processor-executable instructions foraccess by the processor 1014. The processing device 1010 and/or SoC 1012may include one or more memories 1016 configured for various purposes.One or more memories 1016 may include volatile memories such as randomaccess memory (RAM) or main memory, or cache memory.

Some or all of the components of the processing device 1010 and the SoC1012 may be arranged differently and/or combined while still serving thefunctions of the various aspects. The processing device 1010 and the SoC1012 may not be limited to one of each of the components, and multipleinstances of each component may be included in various configurations ofthe processing device 1010.

The various embodiments illustrated and described are provided merely asexamples to illustrate various features of the claims. However, featuresshown and described with respect to any given embodiment are notnecessarily limited to the associated embodiment and may be used orcombined with other embodiments that are shown and described. Inparticular, various embodiments are not limited to use on aerial roboticvehicles and may be implemented on any form of robotic vehicle,including land vehicles, waterborne vehicles and space vehicles inaddition to aerial vehicles. Further, the claims are not intended to belimited by any one example embodiment. For example, one or more of theoperations of the methods 600 and 900 may be substituted for or combinedwith one or more operations of the methods 600 and 900, and vice versa.

The foregoing method descriptions and the process flow diagrams areprovided merely as illustrative examples and are not intended to requireor imply that the steps of the various embodiments must be performed inthe order presented. As will be appreciated by one of skill in the artthe order of operations in the foregoing embodiments may be performed inany order. Words such as “thereafter,” “then,” “next,” etc. are notintended to limit the order of the operations; these words are used toguide the reader through the description of the methods. Further, anyreference to claim elements in the singular, for example, using thearticles “a,” “an” or “the” is not to be construed as limiting theelement to the singular.

The various illustrative logical blocks, modules, circuits, andalgorithm operations described in connection with the embodimentsdisclosed herein may be implemented as electronic hardware, computersoftware, or combinations of both. To clearly illustrate thisinterchangeability of hardware and software, various illustrativecomponents, blocks, modules, circuits, and operations have beendescribed above generally in terms of their functionality. Whether suchfunctionality is implemented as hardware or software depends upon theparticular application and design constraints imposed on the overallsystem. Skilled artisans may implement the described functionality invarying ways for each particular application, but such implementationdecisions should not be interpreted as causing a departure from thescope of the claims.

The hardware used to implement the various illustrative logics, logicalblocks, modules, and circuits described in connection with the aspectsdisclosed herein may be implemented or performed with a general purposeprocessor, a digital signal processor (DSP), an application specificintegrated circuit (ASIC), a field programmable gate array (FPGA) orother programmable logic device, discrete gate or transistor logic,discrete hardware components, or any combination thereof designed toperform the functions described herein. A general-purpose processor maybe a microprocessor, but, in the alternative, the processor may be anyconventional processor, controller, microcontroller, or state machine. Aprocessor may also be implemented as a combination of receiver smartobjects, e.g., a combination of a DSP and a microprocessor, two or moremicroprocessors, one or more microprocessors in conjunction with a DSPcore, or any other such configuration. Alternatively, some operations ormethods may be performed by circuitry that is specific to a givenfunction.

In one or more aspects, the functions described may be implemented inhardware, software, firmware, or any combination thereof. If implementedin software, the functions may be stored as one or more instructions orcode on a non-transitory computer-readable storage medium ornon-transitory processor-readable storage medium. The operations of amethod or algorithm disclosed herein may be embodied in aprocessor-executable software module or processor-executableinstructions, which may reside on a non-transitory computer-readable orprocessor-readable storage medium. Non-transitory computer-readable orprocessor-readable storage media may be any storage media that may beaccessed by a computer or a processor. By way of example but notlimitation, such non-transitory computer-readable or processor-readablestorage media may include RAM, ROM, EEPROM, FLASH memory, CD-ROM orother optical disk storage, magnetic disk storage or other magneticstorage smart objects, or any other medium that may be used to storedesired program code in the form of instructions or data structures andthat may be accessed by a computer. Disk and disc, as used herein,includes compact disc (CD), laser disc, optical disc, digital versatiledisc (DVD), floppy disk, and Blu-ray disc where disks usually reproducedata magnetically, while discs reproduce data optically with lasers.Combinations of the above are also included within the scope ofnon-transitory computer-readable and processor-readable media.Additionally, the operations of a method or algorithm may reside as oneor any combination or set of codes and/or instructions on anon-transitory processor-readable storage medium and/orcomputer-readable storage medium, which may be incorporated into acomputer program product.

The preceding description of the disclosed embodiments is provided toenable any person skilled in the art to make or use the claims. Variousmodifications to these embodiments will be readily apparent to thoseskilled in the art, and the generic principles defined herein may beapplied to other embodiments without departing from the scope of theclaims. Thus, the present disclosure is not intended to be limited tothe embodiments shown herein but is to be accorded the widest scopeconsistent with the following claims and the principles and novelfeatures disclosed herein.

What is claimed is:
 1. A method of controlling rotational maneuvers of arobotic vehicle, comprising: determining, by a processor of the roboticvehicle, a rotational maneuver to perform about an axis at a center ofgravity of the robotic vehicle; determining, by the processor, ananticipated translational movement of a center of sensing of a sensorpositioned away from the center of gravity of the robotic vehicle basedon the rotational maneuver and a distance between the center of gravityof the robotic vehicle and the center of sensing; and controlling, bythe processor, the robotic vehicle to perform a rotational maneuver suchthat the center of gravity of the robotic vehicle traverses a path thatoffsets for the movement of the center of sensing of the sensor.
 2. Themethod of claim 1, wherein determining the anticipated translationalmovement of the center of sensing of the sensor comprises: determining,by the processor, one or more of an anticipated vertical movement and ananticipated horizontal movement of the center of sensing based on therotational maneuver and the distance between the center of gravity ofthe robotic vehicle and the center of sensing.
 3. The method of claim 2,wherein controlling the robotic vehicle to perform the rotationalmaneuver such that the center of gravity of the robotic vehicletraverses a path that offsets for the movement of the center of sensingof the sensor comprises: controlling, by the processor, the roboticvehicle to perform the rotational maneuver such that the center ofgravity of the robotic vehicle traverses a path that offsets one or moreof the anticipated vertical movement and the anticipated horizontalmovement of the center of sensing.
 4. The method of claim 1, whereincontrolling the robotic vehicle to perform a rotational maneuver suchthat the robotic vehicle rotates about the center of sensing of thesensor comprises controlling, by the processor, a plurality of rotors tocause the robotic vehicle to perform the rotational maneuver about theaxis at the center of sensing.
 5. The method of claim 1, wherein thecenter of sensing comprises one or more of a location of the sensor, asensing plane of the sensor, an image plane of a camera, and a focalplane of a camera.
 6. The method of claim 1, wherein the rotationalmaneuver is one or more of a pitch, roll, or yaw.
 7. The method of claim1, wherein the robotic vehicle is one of an aerial vehicle, aterrestrial vehicle, a space-based vehicle, or an aquatic vehicle. 8.The method of claim 1, wherein determining the rotational maneuver toperform about the axis at the center of gravity of the robotic vehiclecomprises: obtaining, by the processor, data defining a navigation pathfor the robotic vehicle; and determining, by the processor, therotational maneuver to perform about the axis at the center of gravityof the robotic vehicle based on data defining the navigation path.
 9. Acomputing device for a robotic vehicle, comprising: a processorconfigured with processor-executable instructions to: determine arotational maneuver to perform about an axis at a center of gravity ofthe robotic vehicle; determine an anticipated translational movement ofa center of sensing of a sensor positioned away from the center ofgravity of the robotic vehicle based on the rotational maneuver and adistance between the center of gravity of the robotic vehicle and thecenter of sensing; and control the robotic vehicle to perform arotational maneuver such that the center of gravity of the roboticvehicle traverses a path that offsets for the movement of the center ofsensing of the sensor.
 10. The computing device of claim 9, wherein theprocessor is further configured with processor-executable instructionsto determine the anticipated translational movement of the center ofsensing of the sensor by: determining one or more of an anticipatedvertical movement and an anticipated horizontal movement of the centerof sensing based on the rotational maneuver and the distance between thecenter of gravity of the robotic vehicle and the center of sensing. 11.The computing device of claim 10, wherein the processor is furtherconfigured with processor-executable instructions to control the roboticvehicle to perform the rotational maneuver such that the center ofgravity of the robotic vehicle traverses a path that offsets for themovement of the center of sensing of the sensor by: controlling therobotic vehicle to perform the rotational maneuver such that the centerof gravity of the robotic vehicle traverses a path that offsets one ormore of the anticipated vertical movement and the anticipated horizontalmovement of the center of sensing.
 12. The computing device of claim 9,wherein the processor is further configured with processor-executableinstructions to control the robotic vehicle to perform the rotationalmaneuver such that the center of gravity of the robotic vehicletraverses a path that offsets for the movement of the center of sensingof the sensor: controlling a plurality of rotors to cause the roboticvehicle to perform the rotational maneuver about the axis at the centerof sensing.
 13. The computing device of claim 9, wherein the center ofsensing comprises one or more of a location of the sensor, a sensingplane of the sensor, an image plane of a camera, and a focal plane of acamera.
 14. The computing device of claim 9, wherein the rotationalmaneuver is one or more of a pitch, roll, or yaw.
 15. The computingdevice of claim 9, wherein the robotic vehicle is one of an aerialvehicle, a terrestrial vehicle, a space-based vehicle, or an aquaticvehicle.
 16. The computing device of claim 9, wherein the processor isfurther configured with processor-executable instructions to determinethe rotational maneuver to perform about the axis at the center ofgravity of the robotic vehicle by: obtaining data defining a navigationpath for the robotic vehicle; and determining the rotational maneuver toperform about the axis at the center of gravity of the robotic vehiclebased on data defining the navigation path.
 17. A processing devicecomprising: a processor configured with processor-executableinstructions to: determine a rotational maneuver to perform about anaxis at a center of gravity of a robotic vehicle; determine ananticipated translational movement of a center of sensing of a sensorpositioned away from the center of gravity of the robotic vehicle basedon the rotational maneuver and a distance between the center of gravityof the robotic vehicle and the center of sensing; and control therobotic vehicle to perform a rotational maneuver such that the center ofgravity of the robotic vehicle traverses a path that offsets for themovement of the center of sensing of the sensor.
 18. The processingdevice of claim 17, wherein the stored processor-executable instructionsare configured to cause the processor to determine the anticipatedtranslational movement of the center of sensing of the sensor by:determining one or more of an anticipated vertical movement and ananticipated horizontal movement of the center of sensing based on therotational maneuver and the distance between the center of gravity ofthe robotic vehicle and the center of sensing.
 19. The processing deviceof claim 18, wherein the stored processor-executable instructions areconfigured to cause the processor to control the robotic vehicle toperform the rotational maneuver such that the center of gravity of therobotic vehicle traverses a path that offsets for the movement of thecenter of sensing of the sensor by: controlling the robotic vehicle toperform the rotational maneuver such that the center of gravity of therobotic vehicle traverses a path that offsets one or more of theanticipated vertical movement and the anticipated horizontal movement ofthe center of sensing.
 20. The processing device of claim 17, whereinthe stored processor-executable instructions are configured to cause theprocessor to control the robotic vehicle to perform a rotationalmaneuver such that the center of gravity of the robotic vehicletraverses a path that offsets for the movement of the center of sensingof the sensor by controlling a plurality of rotors to cause the roboticvehicle to perform the rotational maneuver about the axis at the centerof sensing.
 21. The processing device of claim 17, wherein the center ofsensing comprises one or more of a location of the sensor, a sensingplane of the sensor, an image plane of a camera, and a focal plane of acamera.
 22. The processing device of claim 17, wherein the rotationalmaneuver is one or more of a pitch, roll, or yaw.
 23. The processingdevice of claim 17, wherein the robotic vehicle is one of an aerialvehicle, a terrestrial vehicle, a space-based vehicle, or an aquaticvehicle.
 24. The processing device of claim 17, wherein the storedprocessor-executable instructions are configured to cause the processorto determine the rotational maneuver to perform about the axis at thecenter of gravity of the robotic vehicle by: obtaining data defining anavigation path for the robotic vehicle; and determining the rotationalmaneuver to perform about the axis at the center of gravity of therobotic vehicle based on data defining the navigation path.
 25. Acomputing device for a robotic vehicle, comprising: means fordetermining a rotational maneuver to perform about an axis at a centerof gravity of the robotic vehicle; means for determining an anticipatedtranslational movement of a center of sensing of a sensor positionedaway from the center of gravity of the robotic vehicle based on therotational maneuver and a distance between the center of gravity of therobotic vehicle and the center of sensing; and means for controlling therobotic vehicle to perform a rotational maneuver such that the center ofgravity of the robotic vehicle traverses a path that offsets for themovement of the center of sensing of the sensor.